package com.lcxw.hxzbapi.service.serviceImpl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lcxw.hxzbapi.dao.mapper.ConfigMapper;
import com.lcxw.hxzbapi.entity.pojo.Config;
import com.lcxw.hxzbapi.entity.response.Response;
import com.lcxw.hxzbapi.service.ConfigService;
import com.lcxw.hxzbcommon.common.RedisUtils;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;

@Service
public class ConfigServiceImpl extends ServiceImpl<ConfigMapper, Config> implements ConfigService {

    @Resource
    RedisUtils redisUtils;

    private String enableCubeKey = "enableCube";

    @Override
    public void setEnableCube(int enableCube) {
        redisUtils.string_set(enableCubeKey, enableCube + "");
        UpdateWrapper<Config> updateWrapper = new UpdateWrapper<>();
        updateWrapper.lambda().eq(Config::getId, 1);
        updateWrapper.lambda().set(Config::getEnableCube, enableCube);
        update(updateWrapper);
    }

    @Override
    public int getEnableCube() {

        if (redisUtils.hasKey(enableCubeKey)) {
            return Integer.parseInt(redisUtils.string_get(enableCubeKey));
        }

        QueryWrapper<Config> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().eq(Config::getId, 1);
        Config config = getOne(queryWrapper);
        return config.getEnableCube();
    }

    @Override
    public Response getLiveType() {
        QueryWrapper<Config> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().eq(Config::getId, 1);
        Config config = getOne(queryWrapper);
        String liveType = config.getLiveType();
        String[] liveTypes = liveType.split(",");
        return Response.ok(liveTypes);
    }

    @Override
    public void setLiveTypes(String liveType) {
        UpdateWrapper<Config> updateWrapper = new UpdateWrapper<>();
        updateWrapper.lambda().eq(Config::getId, 1);
        updateWrapper.lambda().set(Config::getLiveType, liveType);
        update(updateWrapper);
    }
}
